Модуль:Animal
local p = {} local arrData = mw.loadData( 'Module:DataAnimal' ) local id = "" local nameprod = "" --Список животных одной категории--* function p.list1(frame) local tp = frame.args1 local data=getitems() local width=50 local root = mw.html.create( 'table' ) :addClass( 'crop' ) :addClass( 'sortable' ) :attr('cellpadding', '0') :attr('cellspacing', '0') local trhead = root:tag('tr') trhead:tag('th'):wikitext('Уровень') trhead:tag('th'):wikitext('Животные') trhead:tag('th'):wikitext('Покупка ') trhead:tag('th'):wikitext('Продукт ') trhead:tag('th'):wikitext('Продажа 15px') trhead:tag('th'):wikitext('Рост, мин ') trhead:tag('th'):wikitext('Доход в час 15px ') trhead:tag('th'):wikitext('Загон ') if tp "all" then trhead:tag('th'):wikitext('Категория ') end trhead:tag('th'):wikitext('Корм ') trhead:tag('th'):wikitext('Локация ') local j=0 for i, v in ipairs(data) do if tp 'all'or v.tp tp then trbody =root:tag('tr') trbody:tag('td') :css('text-align', "center") :css('width', width+2) :wikitext((v.level~='' and 'c '..datai.level..' ур. ' or )..''..width..'px|center') trbody:tag('td') :wikitext(''..v.name..'') trbody:tag('td') :css('text-align', 'center') :wikitext(v.buy) trbody:tag('td') :css('text-align', 'center') :wikitext(v.prod) trbody:tag('td') :css('text-align', 'center') :wikitext(v.sell) trbody:tag('td') :css('text-align', 'center') :wikitext(v.tm) trbody:tag('td') :css('text-align', 'center') :wikitext(v.rez) trbody:tag('td') :wikitext((v.corall and '' or ''..v.corall..'')) if tp "all" then trbody:tag('td') :wikitext(''..v.tp..'') end trbody:tag('td') :wikitext((v.res '' and '' or ''..v.res..'')) trbody:tag('td') :wikitext((v.location '' and 'Любые' or ''..v.location..'')) j=j+1 end end local caption = root:tag('caption') :css('text-align', 'left') :wikitext("Всего: "..j) return tostring( root ) end --Получить список животных-- function getitems() local data={} local i=1 for key, v in pairs(arrData) do datai={name=v.name, tp=v.tp} datai.res=v.res and v.res or '' datai.buy =v.buy and v.buy or v.buyagro..'15px' datai.level =v.level and v.level or (v.levelagro and v.levelagro or ) datai.tm =v.tm and v.tm or '' datai.sell =v.sell and v.sell or '' datai.prod =v.nameprod and v.nameprod or v.name datai.corall =v.corall and v.corall or '' datai.rez =(v.tm and v.sell) and math.floor(v.sell/v.tm*100)/100*60 or '' datai.location =v.location and v.location or '' i=i+1 end table.sort(data,function( a, b ) return a.name < b.name end ) return data end function p.getView( frame ) id = frame.args1 nameprod=arrDataid.nameprod and arrDataid.nameprod or arrDataid.name return path().. infobox().. description().. placeBuy().. location().. ' Загружается на фабрики '..(require("Module:Factory").fab(nameprod)).. 'Category:Животные'.. '[[Category:'..arrDataid.tp..']]' end function path() local root = mw.html.create( 'div' ) :css('font-size', '12px') :css('margin-bottom', '10px') :wikitext('[['..arrDataid.tp1..']] / [['..arrDataid.tp..']] / '..id) return tostring( root ) end function infobox() local root = mw.html.create( 'div' ) :addClass('infobox-crop') root:tag('div') :addClass('infobox-crop-h') :wikitext(id) root:tag('div') :attr('id','img-tree') :wikitext('center') local div1=root:tag('div') local item1_1=div1:tag('div') :addClass('item-spacing') :addClass('item-border') item1_1:tag('div') :addClass('item-label') :wikitext('Категория') item1_1:tag('div') :addClass('item-data') :wikitext('[['..arrDataid.tp..']]') local item1_2=div1:tag('div') :addClass('item-spacing') :addClass('item-border') item1_2:tag('div') :addClass('item-label') :wikitext('Продукт') item1_2:tag('div') :addClass('item-data') :wikitext(arrDataid.nameprod and arrDataid.nameprod or id) local item1_3=div1:tag('div') :addClass('item-spacing') :addClass('item-border') item1_3:tag('div') :addClass('item-label') :wikitext('Рост') item1_3:tag('div') :addClass('item-data') :wikitext(arrDataid.tm>60 and (arrDataid.tm/60)..' час. ��' or arrDataid.tm..' мин. ��,') if (arrDataid.level) then local item1_31=div1:tag('div') :addClass('item-spacing') :addClass('item-border') item1_31:tag('div') :addClass('item-label') :wikitext('Уровень') item1_31:tag('div') :addClass('item-data') :wikitext(arrDataid.level) end local item1_4=div1:tag('div') :addClass('item-spacing') :addClass('item-border') item1_4:tag('div') :addClass('item-label') :wikitext('Локация') item1_4:tag('div') :addClass('item-data') :wikitext(arrDataid.location and '[['..arrDataid.location..']]' or 'Любая') root:tag('div') :addClass('infobox-crop-h-section') :wikitext('Цена') local div2=root:tag('div') local item2_1=div2:tag('div') :addClass('item-spacing') :addClass('item-border') item2_1:tag('div') :addClass('item-label') :wikitext('Покупка') local buy=(arrDataid.buy and arrDataid.buy..' 15px' or (arrDataid.buyagro and arrDataid.buyagro..' 15px')) item2_1:tag('div') :addClass('item-data') :wikitext(buy) local item2_2=div2:tag('div') :addClass('item-spacing') :addClass('item-border') item2_2:tag('div') :addClass('item-label') :wikitext('Продажа') item2_2:tag('div') :addClass('item-data') :wikitext(arrDataid.sell and arrDataid.sell..' 15px' or '') root:tag('div') :addClass('infobox-crop-h-section') :wikitext('Доход') if (arrDataid.tm and arrDataid.sell) then local div3=root:tag('div') local item3_1=div3:tag('div') :addClass('item-spacing') :addClass('item-border') item3_1:tag('div') :addClass('item-label') :wikitext('Доход в час') item3_1:tag('div') :addClass('item-data') :wikitext(((math.floor(arrDataid.sell/arrDataid.tm*100)/100)*60)..' 15px') end return tostring(root) end function description() return "" end function placeBuy() return "" end function location() return "" end --Карточка животного-- function p.animal( frame ) local id = frame.args1 local text="" text=text..' [['..arrDataid.tp1..']] / [['..arrDataid.tp..']] / '..id..' '.. ' Общие сведения '.. ' 200px '.. ' '..id..' '.. ' [[Файл:'..arrDataid.nameprod..'.png|50px]] '..arrDataid.nameprod..' '.. ' Рост: �� ' --Расчет роста часы-минуты-- if arrDataid.tm>60 then text=text..(arrDataid.tm/60)..' час.,' else text=text..arrDataid.tm..' мин.,' end --Доход-- text=text..' доход: ' if arrDataid.tm~=0 and arrDataid.sell~=0 then text=text..(math.floor(arrDataid.sell/arrDataid.tm*100)/100)*60 else text=text..'-' end text=text..' 15px в час '.. ' Покупка ('..id..') Продажа ('..arrDataid.nameprod..') ' text=text..' ' if arrDataid.buy then text=text..' '..arrDataid.buy..' 15px ' else text=text..' '..arrDataid.buyagro..' 15px ' end text=text..' '..arrDataid.sell..' 15px ' --Окупаемость-- if arrDataid.tm~=0 and arrDataid.buyagro 0 then text=text..' Покупка животного окупится через ' if arrDataid.tm<60 then text=text..(math.floor(arrDataid.buy/arrDataid.sell*arrDataid.tm/24*100)/100)..' часов' else text=text..(math.floor(arrDataid.buy/arrDataid.sell*arrDataid.tm/60/24*100)/100)..' дней' end text=text..', для этого нужно снять '..(math.floor(arrDataid.buy/arrDataid.sell*100)/100)..' урожаев. ' elseif arrDataid.buyagro>0 then text=text..' Окупаемость животного вычислить нельзя, т.к. животное покупается за агробаксы. ' end --Уровень- text=text..' Животное можно купить:'.. ' ' if arrDataid.buy then text=text..' с '..arrDataid.level..' уровня за '..arrDataid.buy..' 15px ' end if arrDataid.buyagro then text=text..' с '..arrDataid.levelagro..' уровня за '..arrDataid.buyagro..' 15px ' end local ok, msg = pcall(function () if arrDataid.buyagro1 nil then error() end end) if ok then text=text..' с '..arrDataid.levelagro1..' уровня за '..arrDataid.buyagro1..' 15px ' end text=text..' ' text=text..' Корм для животного: ' if arrDataid.res then text=text..'[['..arrDataid.res..']]' else text=text..'Не требуется. Продукция производится автоматически.' end text=text..' ' text=text..' Можно выращивать в поле и промзоне. '.. ' '.. ' Локация ' if arrDataid.location then text=text..' Можно выращивать в любой локации. ' else text=text..' Можно выращивать только в локации "'..arrDataid.location..'". ' end text=text..' Загружается на фабрики '..(require("Module:Factory").fab(arrDataid.nameprod)).. ' Выращивается в загонах ' if pcall(function () if arrDataid.yncorall nil then error() end end) then if arrDataid.yncorall 1 then text=text..'Животное можно выращивать только в загоне [['..arrDataid.corall..']].' end if arrDataid.yncorall 2 then text=text..'Животное можно выращивать как в загоне [['..arrDataid.corall..']], так и без него.' end if arrDataid.yncorall 0 then text=text..'Животное выращивается без загона.' end else text=text..'Информации о загоне для этого животного пока нет.' end text=text..'Category:Животные'.. '[[Category:'..arrDataid.tp..']]' return text end --Список животных,которые едят корм-- function p.fab(frame) local id=type(frame) 'string'and frame or frame.args1 local arrData = mw.loadData( 'Module:DataAnimal' ) local data={} local i=1 for key,v in pairs(arrData) do if v.res id then datai={name=v.name} i=i+1 end end local text=' Можно скормить животным: ' if pcall(function () if data1.name nil then error() end end) then text=text..' ' table.sort(data,function( a, b ) return a.name < b.name end ) for i,v in ipairs(data) do text=text..' '..v.name..' ' end text=text..' ' else text=text..'Пока никому ' end return text end --Список продукци животных-- function p.product() local text=' ' data={} local j=1 for key,v in pairs(arrData) do dataj={fab=key, name=v.nameprod} j=j+1 end table.sort(data,function( a, b ) return a.name < b.name end ) for i,v in ipairs(data) do if i 1 then text=text....string.sub (v.name, 1,2)..' '..v.name..' ' else if string.sub (datai.name, 1,2)>string.sub (datai-1.name, 1,2) then text=text..' '..''..string.sub (v.name, 1,2)..' ' end if datai-1.name~=datai.name then text=text..' '..v.name..' ' end end end text=text..' ' return text end function p.list(frame) local id = frame.args1 local data=getitems() if #data 0 then return '' end local root = mw.html.create( 'div' ) root:tag('div') :wikitext('Продукт производится животными:') local ul=root:tag('ul') local tab=root:tag('table') tr=tab:tag('tr') local j=0 for i, v in ipairs(data) do if v.prod id then j=j+1 ul:tag('li') :wikitext(''..v.name..'') if math.fmod(j, 4) 0 then tr=tab:tag('tr') end td=tr:tag('td') :css('padding','10px') :css('vertical-align','top') td:tag('div') :css('padding','0 10px 0 0') :css('font-size','16px') :wikitext(''..v.name..'') td:tag('div') :wikitext('200px|'..v.name..'|link='..v.name..'') end end return tostring( root ) end return p